import { IPSThreshold } from './ipsthreshold';
import { IPSDataEntity } from '../dataentity/ipsdata-entity';
import { IPSDEField } from '../dataentity/defield/ipsdefield';
import { IPSDEDataSet } from '../dataentity/ds/ipsdedata-set';
import { IPSModelObject } from '../ipsmodel-object';

/**
 *
 * @export
 * @interface IPSThresholdGroup
 */
export interface IPSThresholdGroup extends IPSModelObject {
  /**
   * 开始值存储属性
   *
   * @type {IPSDEField}
   */
  getBeginValuePSDEField(): IPSDEField | null;

  /**
   * 开始值存储属性
   *
   * @type {IPSDEField}
   */
  get beginValuePSDEField(): IPSDEField | null;

  /**
   * 开始值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getBeginValuePSDEFieldMust(): IPSDEField;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 自定义条件
   * @type {string}
   */
  customCond: string;

  /**
   * 阈值数据存储属性
   *
   * @type {IPSDEField}
   */
  getDataPSDEField(): IPSDEField | null;

  /**
   * 阈值数据存储属性
   *
   * @type {IPSDEField}
   */
  get dataPSDEField(): IPSDEField | null;

  /**
   * 阈值数据存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getDataPSDEFieldMust(): IPSDEField;

  /**
   * 结束值存储属性
   *
   * @type {IPSDEField}
   */
  getEndValuePSDEField(): IPSDEField | null;

  /**
   * 结束值存储属性
   *
   * @type {IPSDEField}
   */
  get endValuePSDEField(): IPSDEField | null;

  /**
   * 结束值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getEndValuePSDEFieldMust(): IPSDEField;

  /**
   * 图标样式值存储属性
   *
   * @type {IPSDEField}
   */
  getIconClsPSDEField(): IPSDEField | null;

  /**
   * 图标样式值存储属性
   *
   * @type {IPSDEField}
   */
  get iconClsPSDEField(): IPSDEField | null;

  /**
   * 图标样式值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getIconClsPSDEFieldMust(): IPSDEField;

  /**
   * 数据集对象
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSet(): IPSDEDataSet | null;

  /**
   * 数据集对象
   *
   * @type {IPSDEDataSet}
   */
  get psDEDataSet(): IPSDEDataSet | null;

  /**
   * 数据集对象（必须存在）
   *
   * @type {IPSDEDataSet}
   */
  getPSDEDataSetMust(): IPSDEDataSet;

  /**
   * 实体对象
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntity(): IPSDataEntity | null;

  /**
   * 实体对象
   *
   * @type {IPSDataEntity}
   */
  get psDataEntity(): IPSDataEntity | null;

  /**
   * 实体对象（必须存在）
   *
   * @type {IPSDataEntity}
   */
  getPSDataEntityMust(): IPSDataEntity;

  /**
   * 阈值项集合
   *
   * @type {IPSThreshold[]}
   */
  getPSThresholds(): IPSThreshold[] | null;

  /**
   * 阈值项集合
   *
   * @type {IPSThreshold[]}
   */
  get psThresholds(): IPSThreshold[] | null;

  findPSThreshold(objKey: any): IPSThreshold | null;

  /**
   * 文本值存储属性
   *
   * @type {IPSDEField}
   */
  getTextPSDEField(): IPSDEField | null;

  /**
   * 文本值存储属性
   *
   * @type {IPSDEField}
   */
  get textPSDEField(): IPSDEField | null;

  /**
   * 文本值存储属性（必须存在）
   *
   * @type {IPSDEField}
   */
  getTextPSDEFieldMust(): IPSDEField;

  /**
   * 阈值组标记
   * @type {string}
   */
  thresholdGroupTag: string;

  /**
   * 阈值组标记2
   * @type {string}
   */
  thresholdGroupTag2: string;

  /**
   * 阈值组类型
   * @description 值模式 [阈值组类型] {STATIC：静态、 DYNAMIC：动态 }
   * @type {( string | 'STATIC' | 'DYNAMIC')}
   */
  thresholdGroupType: string | 'STATIC' | 'DYNAMIC';
}
